//
//  WelcomeView.swift
//  weibo
//
//  Created by RDDBoss3 on 2018/7/17.
//  Copyright © 2018年 Fly. All rights reserved.
//

import UIKit
import SDWebImage

/// 欢迎视图
class WelcomeView: UIView {

//    override init(frame: CGRect) {
//
//        super.init(frame: frame)
//
//        backgroundColor = UIColor.blue
//
//    }

    /**
     initWithCode 只是刚刚从 xib 的二进制文件将视图数据加载完成，还没有和代码连线建立起关系，所以开发时千万不要在这个方法中处理 UI
     */
//    required init?(coder aDecoder: NSCoder) {
//        fatalError("init(coder:) has not been implemented")
//        super.init(coder: aDecoder)
//        print("init - \(iconImageView)")
//    }
    
    /// 图标宽度约束
    @IBOutlet weak var iconImageViewWidth: NSLayoutConstraint!
    
    /// 从 XIB 加载完成调用
    override func awakeFromNib() {
        
        print("awakeFromNib - \(iconImageView)")
        
        guard let urlStirng = NetworkManager.networkManager.userAccount.avatar_large, let url = URL(string: urlStirng) else {
            
            return
            
        }
        
        // 设置头像 - 如果网络图像没下载完成，先显示占位图
        // 如果不指定占位图，之前设置的图像会被清空
        iconImageView.sd_setImage(with: url, placeholderImage: #imageLiteral(resourceName: "avatar"))
        
        // 此时 iconImageView 的 bounds 有可能还没有设置(宽高都为0)，若未设置，采用方法2设置圆角
//        iconImageView.layer.cornerRadius = iconImageView.bounds.width * 0.5 // 方法1
        iconImageView.layer.cornerRadius = iconImageViewWidth.constant * 0.5 // 方法2
        
        iconImageView.layer.masksToBounds = true
        
    }
    
    @IBOutlet weak var iconImageView: UIImageView!
    
    @IBOutlet weak var tipLabel: UILabel!
    
    @IBOutlet weak var bottomMagin: NSLayoutConstraint!
    
    class func welcomeView() -> WelcomeView {
        
        let nib = UINib(nibName: "WelcomeView", bundle: nil)
        
        let v = nib.instantiate(withOwner: nil, options: nil)[0] as! WelcomeView
        
        // 从 xib 加载的视图，默认是 600*600 的大小
        v.frame = UIScreen.main.bounds
        
        return v
        
    }
    
    /// 自动布局系统更新完约束之后，会自动调用此方法
    // 通常是对子视图布局进行修改
//    override func layoutSubviews() {
//        super.layoutSubviews()
//    }
    
    /// 视图被添加到 window 上，表示视图已经显示
    override func didMoveToWindow() {
        
        super.didMoveToWindow()
        
        /**
         视图是使用自动布局来设置的，只是设置了约束
         当视图被添加到窗口上时，根据父视图的大小，计算约束值，更新控件位置
         layoutIfNeeded 会直接按照当前约束直接更新控件位置
         执行之后，控件所在位置，就是 xib 中布局的位置
         */
        
        layoutIfNeeded()
        
        bottomMagin.constant = bounds.height - 200
        
        // 如果控件们的 frame 还没有就算好，所有约束会一起动画
        UIView.animate(withDuration: 3, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 0, options: [], animations: {
            
            // 更新约束
            self.layoutIfNeeded()
            
        }) { (isBool) in

            UIView.animate(withDuration: 1.0, animations: {

                self.tipLabel.alpha = 1.0

            }, completion: { (_) in
                
                self.removeFromSuperview()

            })
            
        }
        
    }
    
    /*
    // Only override draw() if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func draw(_ rect: CGRect) {
        // Drawing code
    }
    */

}
